/**
 * 小程序用户服务 
 */
var request = require('./request.js');
var utils = require('../utils/utils.js');

/**
 * 用户登录的逻辑:
 * 
 * 1. 必须先微信授权；
 * 2. 调用登录接口，判断返回的member字段是否有值，如果有值说明已经是会员，则跳过第三步；
 * 3. 如果member字段没有值(没有值虽然不返回会员信息，但是粉丝信息还是会返回的），说明尚未注册会员，则需要发送短信验证码, 调用bindMobile接口完成注册; 
 */
module.exports = {

  /**
    * 用户登录
    *
    * @param decryptUserInfo 是否解密用户信息
    * @return 用户信息，如果返回的 #member字段为空，说明当前粉丝没有绑定手机号， 还不是会员。
    */
  login(decryptUserInfo = true) {
    return request.login(decryptUserInfo)
  },

  /**
   * 绑定手机
   * 
   * @param mobile 手机号
   * @param captcha 短信验证码
   */
  bindMobile(mobile, captcha) {
    return request.post('/wxa/bindMobile', {
      mobile: mobile,
      captcha: captcha
    })
      .then(data => {
        // 绑卡后要重新登录，换取会员的登录令牌
        return this.login();
      })
  },

  /**
   * 解析小程序用户的手机号
   * @param encryptedData 包括敏感数据在内的完整用户信息的加密数据
   * @param iv 加密算法的初始向量
   */
  parseWxaMobile: function (encryptedData, iv) {
    return request.post('/wxa/parseWxaMobile', {
      encryptedData: encryptedData,
      iv: iv
    })
  },
  /**
   * 通过小程序获得的手机信息加密数据绑定会员手机号,
   * 绑定成功后请立即重新调用登录换取最新的Access Token。
   */
  bindMobileByEncrypt: function(encryptedData, iv) {
    return request.post('/wxa/bindMobileByEncrypt', {
      encryptedData: encryptedData,
      iv: iv
    }).then(data => {
      // 绑卡后要重新登录，换取会员的登录令牌
      return this.login();
    })
  }

}